import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;


import java.io.DataInputStream;
import java.io.DataOutputStream;

import java.io.FileInputStream;
import java.io.FileOutputStream;

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.Socket;


public class BufferedSocketClient {

	  public static Socket socket1;
	
  public static void main(String args[]) throws Exception 
  {
	    //Socket socket1;
	    int portNumber = 8081;
	    String str = "Salut Serveur";
	
	    socket1 = new Socket(InetAddress.getLocalHost(), portNumber);
	
	    BufferedReader br = new BufferedReader(new InputStreamReader(socket1.getInputStream()));
	
	    PrintWriter pw = new PrintWriter(socket1.getOutputStream(), true);
	
	    pw.println("Salut Serveur");
	
	    while ((str = br.readLine()) != null)
	    {

	    	  System.out.println(str);
		      pw.println("bye");
		      receive(socket1); 
		      if(str.equals("bye"))
		      { 
		    	  System.out.println("pipo");
		    	  receive(socket1,"pipo"); 
		      }
		        
		        break;
	    }
	
	   //receive(socket1); 
	    
/*	 
	    byte[] mybytearray = new byte[1024];
	    InputStream is = socket1.getInputStream();
	    FileOutputStream fos = new FileOutputStream("d:/xs.txt");
	    BufferedOutputStream bos = new BufferedOutputStream(fos);
	    int bytesRead = is.read(mybytearray, 0, mybytearray.length);
	    bos.write(mybytearray, 0, bytesRead);
	    bos.close();
	    socket1.close();
*/
	    
/*	    
	    DataInputStream dis = new DataInputStream(socket1.getInputStream());
		FileOutputStream fos = new FileOutputStream("d:/recevoir_server_to_client.txt");
		byte[] buffer = new byte[4096];
		
		int filesize = 15123; // Send file size in separate msg
		int read = 0;
		int totalRead = 0;
		int remaining = filesize;
		while((read = dis.read(buffer, 0, Math.min(buffer.length, remaining))) > 0) 
		{
			totalRead += read;
			remaining -= read;
			System.out.println("read " + totalRead + " bytes.");
			fos.write(buffer, 0, read);
		}
		
		fos.close();
		dis.close();
*/	    
		
		br.close();
		pw.close();
	   // socket1.close();
  }
  
  private static void receive(Socket s, String msg)  throws Exception 
  {
  	
	   byte[] mybytearray = new byte[1024];
	    InputStream is = s.getInputStream();
	    FileOutputStream fos = new FileOutputStream("d:/xs.txt");
	    BufferedOutputStream bos = new BufferedOutputStream(fos);
	    int bytesRead = is.read(mybytearray, 0, mybytearray.length);
	    bos.write(mybytearray, 0, bytesRead);
	    
	    System.out.println("Reception du fichier"+msg);
	    
	    bos.close();
	    s.close();
	    
	
	  

  }

}
